package com.shujia.sql

import org.apache.spark.SparkContext
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.{DataFrame, SQLContext, SparkSession}

object Demo01SparkSessio {
  def main(args: Array[String]): Unit = {
    val spark: SparkSession = SparkSession
      .builder()
      .appName("Demo01SparkSessio")
      .master("local")
      .getOrCreate()

    // SparkSession 2.0引入的统一的入口，里面包含了SparkContext以及SQLContext，HiveContext也支持
    val sc: SparkContext = spark.sparkContext
    val stuRDD: RDD[String] = sc.textFile("spark/data/stu/students.txt")
    stuRDD.foreach(println)

    //    val sqlContext: SQLContext = spark.sqlContext
    val stuDF: DataFrame = spark
      .read
      .format("csv")
      .option("sep", ",")
      // 如果数据中没有保存结构，则需要手动指定Schema
      .schema("id String,name String,age Int,gender String,clazz String")
      .load("spark/data/stu/students.txt")
    // DataFrame提供的一种查看数据的方式，可以指定展示的数据条数，不指定，默认返回20条
    stuDF.show(10)

    import spark.implicits._
    import org.apache.spark.sql.functions._

    stuDF.select($"id", substring($"name", 1, 1) as "last_name").show()
    stuDF.where("clazz like '理科%'").show() // 字符串表达式
    stuDF.where($"clazz" like "文科%").show() // 列表达式

  }

}
